package com.molichuxing.gateway.api.services;

import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.web.multipart.MultipartFile;

import com.molichuxing.framework.dto.Paged;
import com.molichuxing.framework.dto.UploadFileResponseDto;
import com.molichuxing.framework.result.ResponseResult;
import com.molichuxing.gateway.bff.basic.entity.response.InsuranceCompanyVo;
import com.molichuxing.gateway.bff.basic.entity.response.OwnershipDetailVo;
import com.molichuxing.gateway.bff.basic.entity.response.OwnershipVo;
import com.molichuxing.gateway.bff.basic.entity.response.ReceiptCompanyVo;
import com.molichuxing.gateway.bff.basic.entity.response.RegionCityVo;
import com.molichuxing.gateway.bff.basic.entity.response.SubcompanyVo;
import com.molichuxing.gateway.bff.basic.entity.response.VehicleMakeVo;
import com.molichuxing.gateway.bff.basic.entity.response.VehicleModlemakeVo;

public interface BasicApiService {


	/***
	 * 获取保险公司列表
	 *
	 * @return
	 */
	ResponseResult<List<InsuranceCompanyVo>> getInsuranceCompany();

	/***
	 * 获取省市级关系 父子级
	 *
	 * @return
	 */
	ResponseResult<List<RegionCityVo>> getAllCity(Integer level);

	/***
	 * 分子公司列表
	 *
	 * @param selectParams
	 * @return
	 */
	ResponseResult<Paged<SubcompanyVo>> getSubcompanyList(Map<String, Object> selectParams);

	/***
	 * 分子公司id获取详情
	 *
	 * @param id
	 * @return
	 */
	ResponseResult<SubcompanyVo> getSubcompanyVo(Integer id);

	/***
	 * 新增分子公司
	 *
	 * @param subcompanyVo
	 * @return
	 */
	ResponseResult<Boolean> createSubcompany(SubcompanyVo subcompanyVo);

	/***
	 * 修改分子公司
	 *
	 * @param subcompanyVo
	 * @return
	 */
	ResponseResult<Boolean> modifySubcompany(SubcompanyVo subcompanyVo);

	/***
	 * 产权方列表
	 *
	 * @param selectParams
	 * @return
	 */
	ResponseResult<Paged<OwnershipVo>> getOwnershipListPage(Map<String, Object> selectParams);

	/***
	 * 新增产权方信息
	 *
	 * @param ownershipVo
	 * @return
	 */
	ResponseResult<Boolean> createOwnership(OwnershipVo ownershipVo);

	/***
	 * 修改产权方信息
	 *
	 * @param ownershipVo
	 * @return
	 */
	ResponseResult<Boolean> modifyOwnership(OwnershipVo ownershipVo);

	/**
	 * 根据id查询产权方
	 * @param ownershipId
	 * @return
	 */
	public ResponseResult<OwnershipDetailVo> getOwnershipById(Integer ownershipId);


	/**
	 * 根据省份id查询分子公司列表
	 * @param provinceId
	 * @return
	 */
	public ResponseResult<List<SubcompanyVo>> getOwnershipByProvinceId(Integer provinceId);

	/**
	 * 获取车辆品牌列表
	 * @param isMainMake
	 * @return
	 */
	public ResponseResult<List<VehicleMakeVo> > getModelMakeList(Integer isMainMake);

	/**
	 * 查询子品牌车系车型信息
	 * @return
	 */
	ResponseResult<List<VehicleModlemakeVo>> getVehicleModlemake();

	/**
	 * 获取所有收款方信息
	 * 
	 * @return
	 */
	public ResponseResult<List<ReceiptCompanyVo>> receiptCompany();

	/**
	 * 文件上传-单个
	 * 
	 * @param request
	 * @param file
	 * @param type
	 * @return
	 */
	ResponseResult<UploadFileResponseDto> uploadFile(HttpServletRequest request, MultipartFile file, String type);

	/**
	 * 文件上传-批量
	 * 
	 * @param request
	 * @param file
	 * @param type
	 * @return
	 */
	ResponseResult<List<UploadFileResponseDto>> uploadFileBatch(HttpServletRequest request, MultipartFile[] files,
			String type);

}
